Enhanced digital predistortion

ABSTRACT

In one embodiment of the present invention, a weight vector is generated based on a pre-distorted input signal and an output signal of an amplifier using a computation reduction technique. The computation reduction technique decomposes a number of multiplication operations between complex numbers such that a number of multiplications and a number of additions to generate the weight vector is reduced as compared to if the number of multiplication operations between complex numbers was not decomposed. An input signal for input to an amplifier is pre-distorted based on the generated weight vector.

BACKGROUND OF THE INVENTION SUMMARY OF THE INVENTION

The present invention provides a methodology to improve digitalpre-distortion for correcting amplifier distortion.

FIG. 1 illustrates the prior art architecture for digital pre-distortionto correct amplifier distortion. As shown, an input signal (e.g., aradio frequency (RF) input signal) is input to a pre-distorter 10. Thepre-distorter 10 multiplies the input signal with complex weight vectorw supplied by a weight estimator 12. The pre-distorted input signal d(n)is supplied to an amplifier 14, which amplifies the pre-distorted inputsignal d(n) to obtain an output signal x(n) (e.g., an RF output signal)corrected for amplifier distortion.

The weight estimator 12 models the amplifier distortion as aleast-squares estimation problem with multi-channels and equal weightlengths. The weight estimator 12 collects digital samples at both theinput and output of the amplifier and estimates the parameters of theamplifier non-linear distortion model. With these modeled parameters,the weight estimator 12 generates weights that the pre-distorter 10 usesto pre-distort the input signal to counter the amplifier distortions.

Operation of the weight estimator 12 will now be described in greaterdetail. As shown in FIG. 1, d(n) denotes the amplifier (complex) inputsignal and x(n) denotes the amplifier (complex) output signal, at timen.

The amplifier output signal x(n) is expanded into a column vector of K=5magnitude-polynomial terms or multi-channels, to model the amplifiernonlinearity distortion:

${\underset{\_}{x}(n)} = {\begin{bmatrix}{x(n)} \\{{{x(n)}}{x(n)}} \\{{{x(n)}}^{2}{x(n)}} \\{{{x(n)}}^{3}{x(n)}} \\{{{x(n)}}^{4}{x(n)}}\end{bmatrix} = {\begin{bmatrix}1 \\{{x(n)}} \\{{x(n)}}^{2} \\{{x(n)}}^{3} \\{{x(n)}}^{4}\end{bmatrix}{x(n)}}}$

Note that variables are underscored or bolded to represent a vector ormatrix. x ^(H) (n) is used to denote the conjugate transpose of vectorx(n) and x ^(T)(n) is used to denote the transpose of vector x(n). Also,x*(n) is used to denote the complex conjugate of x(n).

The amplifier output signal x(n) is a complex number whereas themagnitude-polynomial multipliers are positive real numbers. This meansthat these K=5 terms in vector x(n) are the scaled versions of theamplifier output signal x(n).

FIG. 2 illustrates the scaled relationship of the 5 elements in vectorx(n), where x(n)=0.2+i0.8. To model the amplifier distortion, the impactof all the L=6 delayed versions of x(n) is considered, including thevector x(n) itself as shown below:

${{\underset{\_}{x}\left( {n - l} \right)} = {\begin{bmatrix}{x\left( {n - l} \right)} \\{{{x\left( {n - l} \right)}}{x\left( {n - l} \right)}} \\{{{x\left( {n - l} \right)}}^{2}{x\left( {n - l} \right)}} \\{{{x\left( {n - l} \right)}}^{3}{x\left( {n - l} \right)}} \\{{{x\left( {n - l} \right)}}^{4}{x\left( {n - l} \right)}}\end{bmatrix} = {\begin{bmatrix}1 \\{{x\left( {n - l} \right)}} \\{{x\left( {n - l} \right)}}^{2} \\{{x\left( {n - l} \right)}}^{3} \\{{x\left( {n - l} \right)}}^{4}\end{bmatrix}{x\left( {n - l} \right)}}}},{l = 0},1,\cdots,{L - 1.}$

Here, K=5 is the number of multi-channels (or magnitude-polynomialterms) and L=6 is the total number of delayed versions in eachmulti-channel. As each of these terms has an associated complex weight(or coefficient) multiplier, the total number of weights is M=KL=30. Thecross-polynomial term will be considered below.

These 6 vectors are concatenated into an M×1 vector, as themulti-channel vector u(n) for the least-square estimation model, and acorresponding M×1 weight vector w as shown below:

${\underset{\_}{u}(n)} = {\begin{bmatrix}{\underset{\_}{x}(n)} \\{\underset{\_}{x}\left( {n - 1} \right)} \\{\underset{\_}{x}\left( {n - 2} \right)} \\{\underset{\_}{x}\left( {n - 3} \right)} \\{\underset{\_}{x}\left( {n - 4} \right)} \\{\underset{\_}{x}\left( {n - 5} \right)}\end{bmatrix} = {{\begin{bmatrix}{u_{1}(n)} \\{u_{2}(n)} \\{u_{3}(n)} \\{u_{4}(n)} \\\vdots \\{u_{M - 1}(n)} \\{u_{M}(n)}\end{bmatrix}\mspace{11mu} {and}\mspace{14mu} \underset{\_}{w}} = {\begin{bmatrix}w_{1} \\w_{2} \\w_{3} \\w_{4} \\\vdots \\w_{M - 1} \\w_{M}\end{bmatrix}.}}}$

Notice that output signal vector u(n) can be expressed in two ways,either in terms of magnitude-polynomial vectors x(n−l) or individualelements u_(i)(n).

The estimate of the desired amplifier input signal, at time n, is givenas:

${{\underset{\_}{w}}^{T} \cdot {\underset{\_}{u}(n)}} = {\sum\limits_{i = 1}^{M}{w_{i} \cdot {{u_{i}(n)}.}}}$

The least-squares estimation problem is to find the optimal weights wthat minimize the sum of error squares, given N pairs of actualamplifier input signal d(n) and vector u(n), n=1, 2, . . . , N:

${\sum\limits_{n = 1}^{N}{{{d(n)} - {{\underset{\_}{w}}^{T} \cdot {\underset{\_}{u}(n)}}}}^{2}} = {\sum\limits_{n = 1}^{N}{{{d(n)} - {\sum\limits_{i = 1}^{M}{w_{i} \cdot {u_{i}(n)}}}}}^{2}}$

The optimal weights solution for the least-squares estimation problemsatisfies the following matrix equation:

w _(LS) =R ⁻¹ ·v

where R is the M×M correlation matrix and v is the M×1 cross-correlationvector defined as:

$\underset{\_}{R} = {\sum\limits_{n = 1}^{N}{\underset{\_}{R}(n)}}$where${\underset{\_}{R}(n)} = {{\underset{\_}{u}(n)} \cdot {{\underset{\_}{u}}^{H}(n)}}$and$\underset{\_}{v} = {\sum\limits_{n = 1}^{N}{\underset{\_}{v}(n)}}$where${\underset{\_}{v}(n)} = {{d(n)} \cdot {{\underset{\_}{u}(n)}.}}$

From the definition of the correlation matrix, it can be seen thatmatrix R(n)=└r_(i,j)(n)┘ is symmetric, i.e., r_(i,j)(n)=r*_(j,i)(n),1≦i, j≦M. Accordingly, as is well-known only the upper triangularelements need to be computed and then used for the other elements. Thetotal number of elements is 465 (=M·(M+1)/2) out of 900 elements.

Since the vector u(n) consists of 6 delayed versions of vector x(n), sodo the correlation matrix and cross-correlation vector. The correlationmatrix can be divided into the following 6×6 blocks of correlationvalues:

${\underset{\_}{R}\mspace{11mu} (n)} = \begin{bmatrix}{{\underset{\_}{R}}_{1,1}(n)} & {{\underset{\_}{R}}_{1,2}(n)} & {{\underset{\_}{R}}_{1,3}(n)} & {{\underset{\_}{R}}_{1,4}(n)} & {{\underset{\_}{R}}_{1,5}(n)} & {{\underset{\_}{R}}_{1,6}(n)} \\{{\underset{\_}{R}}_{2,1}(n)} & {{\underset{\_}{R}}_{2,2}(n)} & {{\underset{\_}{R}}_{2,3}(n)} & {{\underset{\_}{R}}_{2,4}(n)} & {{\underset{\_}{R}}_{2,5}(n)} & {{\underset{\_}{R}}_{2,6}(n)} \\{{\underset{\_}{R}}_{3,1}(n)} & {{\underset{\_}{R}}_{3,2}(n)} & {{\underset{\_}{R}}_{3,3}(n)} & {{\underset{\_}{R}}_{3,4}(n)} & {{\underset{\_}{R}}_{3,5}(n)} & {{\underset{\_}{R}}_{3,6}(n)} \\{{\underset{\_}{R}}_{4,1}(n)} & {{\underset{\_}{R}}_{4,2}(n)} & {{\underset{\_}{R}}_{4,3}(n)} & {{\underset{\_}{R}}_{4,4}(n)} & {{\underset{\_}{R}}_{4,5}(n)} & {{\underset{\_}{R}}_{4,6}(n)} \\{{\underset{\_}{R}}_{5,1}(n)} & {{\underset{\_}{R}}_{5,2}(n)} & {{\underset{\_}{R}}_{5,3}(n)} & {{\underset{\_}{R}}_{5,4}(n)} & {{\underset{\_}{R}}_{5,5}(n)} & {{\underset{\_}{R}}_{5,6}(n)} \\{{\underset{\_}{R}}_{6,1}(n)} & {{\underset{\_}{R}}_{6,2}(n)} & {{\underset{\_}{R}}_{6,3}(n)} & {{\underset{\_}{R}}_{6,4}(n)} & {{\underset{\_}{R}}_{6,5}(n)} & {{\underset{\_}{R}}_{6,6}(n)}\end{bmatrix}$

Block R _(i,j)(n) is a 5×5 correlation matrix between vectors x(n−i+1)and x(n−j+1) such as expressed below:

R _(i,j)(n)= x (n−i+1)· x ^(H)(n−j+1), 1≦i,j≦5.

Most of the elements in matrix R(n) are the same as elements in matrixR(n−1), as shown below:

R _(i+1,j+1)(n)= R _(i,j)(n−1), 1≦i,j≦5.

This is illustrated graphically in FIG. 3.

The new elements in R(n) that are not included in R(n−1) are the top rowof blocks and the left most column of blocks. The top row of blocks is:

x (n)· u ^(H)(n)=[ R _(1,1)(n) R _(1,2)(n) R _(1,3)(n)· R _(1,4)(n) R_(1,5)(n) R _(1,6)(n)].

The first block R _(1,1)(n) is a diagonal block with symmetric elementsand the remaining blocks are off-diagonal blocks. Hence, only the 140elements in the first block R _(1,1)(n) need to be computed.

From the symmetry property, only the 21 upper triangular blocks need tobe considered. These blocks can be grouped into 2 types, diagonal andoff-diagonal blocks, where the blocks in each type have the samestructure as set forth in table 1 below:

TABLE 1 Blocks Example Type # in this type Dim # Expression 1 Diagonalblocks: 5 × 5 6 R_(1,1) (n) = x(n) · x^(H) (n) R_(1,1) (n), . . . ,R_(6,6) (n) 2 Off-diagonal blocks: 5 × 5 15 R_(1,2) (n) = x(n) · x^(H)(n − 1) R_(1,2) (n), . . . , R_(5,6) (n)

The symmetry property may be used to compute only 465 elements of thecorrelation matrix out of 900 elements. Each correlation value iscomputed using complex-complex multiplication with 4-multiplications and2-additions. The complexity is summarized in table 2 below:

TABLE 2 Operations #Mult #Add 465 complex-complex 1860 930multiplications

Also, the delayed version property may be used to reduce the computationcomplexity where only 140 correlation values are computed. Eachcorrelation value is computed using complex-complex multiplication with4-multiplications and 2-additions. The complexity is summarized in table3 below:

TABLE 3 Operations #Mult #Add 140 complex-complex 560 280multiplications

SUMMARY OF THE INVENTION

The present invention relates to amplifier predistortion.

In one embodiment of the present invention, a weight vector is generatedbased on a pre-distorted input signal and an output signal of anamplifier using a computation reduction technique. The computationreduction technique decomposes a number of multiplication operationsbetween complex numbers such that a number of multiplications and anumber of additions to generate the weight vector is reduced as comparedto if the number of multiplication operations between complex numberswas not decomposed. An input signal for input to an amplifier ispre-distorted based on the generated weight vector.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will become more fully understood from thedetailed description given herein below and the accompanying drawings,wherein like elements are represented by like reference numerals, whichare given by way of illustration only and thus are not limiting of thepresent invention and wherein:

FIG. 1 illustrates the prior art architecture for digital pre-distortionto correct amplifier distortion.

FIG. 2 illustrates the scaled relationship of the 5 elements in vectorx(n), where x(n)=0.2+i0.8.

FIG. 3 graphically demonstrates that most of the elements in matrix R(n)are the same elements in matrix R(n−1).

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

The present invention provides methodologies for reducing thecomputation complexity of the pre-distorting operation discussed indetail above. To better understand the methodologies of the presentinvention, the operations for complex and scalar multiplications will bereviewed, and then the methodologies of the present invention will bedescribed by examining the correlation matrix and the cross-correlationvector.

Complex and Scalar Multiplications

The basic operation to construct a correlation matrix is repeatedlymultiplying two complex numbers and adding the result to accumulators.With the direct approach, each complex-complex multiplication requires 4multiplications and 2 additions. An example of this is shown below:

(a+ib)·(c+id)=(a·c−b·d)+i(a·c+b·d)

Using this example, the distortion model will be analyzed and the scalarterms in the correlation matrix and cross-correlation vector identified.The general complex-complex multiplications will then be converted toscalar-complex multiplications or scalar-scalar multiplicationsaccording to methodologies of the present invention to reduce thecomputation complexity. The following are some guidelines:

-   Sum of squares—Whenever a magnitude square is encountered, the    sum-of-squares operation will be used, since this (e.g.,    |a+ib|²=a·a+b·b) requires only 2 multiplications and 1 addition.-   Scalar-complex multiplication—If one of the numbers is a scalar,    scalar-complex multiplication will be used, since this (e.g.,    (a+ib)·c=a·c+ib·c) requires only 2 multiplications.-   Scalar-scalar multiplication—If both numbers are scalar,    scalar-scalar multiplication will be used, since this requires only    1 multiplication.

Table 4 below summarizes the complexity of different multiplications:

TABLE 4 Multiplication Operations Equations #Mult # Add Complex-complex(a + ib) · (c + id) = (a · c − 4 2 b · d) + i(a · c + b · d) Sum ofsquares |a + ib|² = a · a + b · b 2 1 Scalar-complex (a + ib) · c = a ·c + ib · c 2 0 Scalar-scalar a · b 1 0

Correlation Matrix

Reducing the computation complexity for determining the correlationmatrix will be discussed first. The correlation matrix includes twotypes of blocks: Type 1 or diagonal blocks, and Type 2 or off-diagonalblocks.

Type 1 (Diagonal) Blocks

The correlation matrix has L=6 diagonal blocks. Without loss ofgenerality, handling the first diagonal block R _(1,1)(n) will bedescribed in detail and handling of the other diagonal blocks will bereadily understood from this discussion. It will be shown that theK·K=25 elements in diagonal block R _(1,1)(n) are real-valued and can berepresented by 9 polynomial terms.

Letting a=|x(n)|, we have:

${\underset{\_}{x}\mspace{11mu} (n)} = {\begin{bmatrix}1 \\a \\a^{2} \\a^{3} \\a^{4}\end{bmatrix}\mspace{11mu} x\mspace{11mu} {(n).}}$

Diagonal block R _(1,1)(n) is the auto-correlation block of x(n) andincludes real valued elements as shown below:

$\begin{matrix}{{{\underset{\_}{R}}_{1,1}(n)} = {\underset{\_}{x}\mspace{11mu} (n)\mspace{11mu} {{\underset{\_}{x}}^{H}(n)}}} \\{= {{\begin{bmatrix}1 \\a \\a^{2} \\a^{3} \\a^{4}\end{bmatrix}\left\lbrack {1\mspace{14mu} a\mspace{14mu} a^{2}\mspace{14mu} a^{3}\mspace{14mu} a^{4}} \right\rbrack}\mspace{11mu} x\mspace{11mu} {(n) \cdot {x^{*}(n)}}}} \\{= \begin{bmatrix}a^{2} & a^{3} & a^{4} & a^{5} & a^{6} \\a^{3} & a^{4} & a^{5} & a^{6} & a^{7} \\a^{4} & a^{5} & a^{6} & a^{7} & a^{8} \\a^{5} & a^{6} & a^{7} & a^{8} & a^{9} \\a^{6} & a^{7} & a^{8} & a^{9} & a^{10}\end{bmatrix}}\end{matrix}$

Notice that a²=|x(n)|²=x(n)·x*(n).

Therefore, there are only 9 distinct real values {a², a³, a⁴, . . . , a⁹and a¹⁰} in the block. These polynomial terms can be obtainedsequentially. Using these properties the computation complexity may bereduced.

The following is the procedure performed at the weight estimator 12according to an embodiment of the present invention to compute theelements in diagonal block R _(1,1)(n):

-   1. Compute a², using sum-of-squares operation, where    a²=|x(n)|²=(real(x(n)))²+(imag(x(n)))².-   2. Compute a=sqrt(a²) and store value a along with x(n).-   3. Sequentially compute a³, a⁴, . . . , a⁹ and a¹⁰, by multiplying    the previous number by a, using scalar-scalar multiplications.

The computation complexity, excluding the square-root operation, issummarized below in table 5. The baseline given in this and other tablesis for the prior art methodology discussed in detail in the Backgroundof the Invention section:

TABLE 5 Operations #Mult #Add a², Sum of squares 2 1 a³, a⁴, . . . , a⁹and a¹⁰ 8 0 Total 10 1 Baseline: 15 complex-complex 60 30multiplications

Type 2 (Off-diagonal) Blocks

Without loss of generality, handling of off-diagonal block R _(1,2)(n)will be described in detail, and the handling of other off-diagonalblocks will be readily apparent from this discussion. Letting a=|x(n)|and b=|x(n−1)|, we have:

${\underset{\_}{x}\mspace{11mu} (n)} = {{\begin{bmatrix}1 \\a \\a^{2} \\a^{3} \\a^{4}\end{bmatrix}\mspace{11mu} x\mspace{11mu} (n)\mspace{14mu} {and}\mspace{14mu} \underset{\_}{x}\mspace{11mu} \left( {n - 1} \right)} = {\begin{bmatrix}1 \\b \\b^{2} \\b^{3} \\b^{4}\end{bmatrix}\mspace{11mu} x\mspace{11mu} {\left( {n - 1} \right).}}}$

The off-diagonal block becomes:

$\begin{matrix}{{{\underset{\_}{R}}_{1,2}(n)} = {\underset{\_}{x}\mspace{11mu} (n)\mspace{11mu} {{\underset{\_}{x}}^{H}\left( {n - 1} \right)}}} \\{= {\begin{bmatrix}1 & b & b^{2} & b^{3} & b^{4} \\a & {ab} & {ab}^{2} & {ab}^{3} & {ab}^{4} \\a^{2} & {a^{2}b} & {a^{2}b^{2}} & {a^{2}b^{3}} & {a^{2}b^{4}} \\a^{3} & {a^{3}b} & {a^{3}b^{2}} & {a^{3}b^{3}} & {a^{3}b^{4}} \\a^{4} & {a^{4}b} & {a^{4}b^{2}} & {a^{4}b^{3}} & {a^{4}b^{4}}\end{bmatrix}\mspace{11mu} x\mspace{11mu} {(n) \cdot {x^{*}\left( {n - 1} \right)}}}}\end{matrix}\mspace{11mu}$

Therefore, the only complex-complex multiplication that is computed isthe first element x(n)·x*(n−1) in the block. The rest of the terms maybe obtained sequentially using scalar-complex multiplications.

The following is the procedure the weight estimator 12 performsaccording to an embodiment of the present invention to compute elementsin the off-diagonal block R _(1,2)(n):

-   1. Compute the first element of R _(1,2)(n), x(n)·x*(n−1), using a    complex-complex multiplication.-   2. Compute the remaining elements (or terms) in the first row    sequentially, by repeatedly multiplying the previous element by b,    using scalar-complex multiplications.-   3. Compute the remaining rows sequentially, by repeatedly    multiplying the previous row by a, using scalar-complex    multiplications.

The computation complexity is summarized below in table 6 below:

TABLE 6 Operations #Mult #Add 1 complex-complex multiplication 4 2 24scalar-complex multiplications 48 0 Total 52 2 Baseline: 25complex-complex 100 50 multiplications

The magnitude b=|x(n−1)| may be computed and stored at the weightestimator 12 while computing diagonal block R _(1,1)(n−1) at time n−1.Accordingly, there is no need to repeat the square-root operation.

The following tables summarize the reduction in computation complexityfor the improved algorithm. If we compute the 465 elements in the uppertriangular correlation matrix according to the symmetry property, thecomplexity reduction is summarized in the following table:

TABLE 7 Operations #Mult #Add 6 diagonal blocks 60 6 15 off-diagonalblocks 780 30 Total 840 36 Baseline: 465 complex-complex 1860 930multiplications

If we compute only the 140 elements in the top block row of thecorrelation matrix according to the delayed version property, thecomplexity reduction is summarized in the following table:

TABLE 8 Operations #Mult #Add 1 diagonal block 10 1 5 off-diagonalblocks 260 10 Total 270 12 Baseline: 140 complex-complex 560 280multiplications

In both cases, more than one half of the computation complexity can bereduced. Cross Correlation Vector

Next, reducing the computation complexity for determining the crosscorrelation vector will be described.

The cross correlation vector at time n is:

$\begin{matrix}{{\underset{\_}{v}\mspace{11mu} (n)} = {d\mspace{11mu} {(n) \cdot \underset{\_}{u}}\mspace{11mu} (n)}} \\{= {\begin{bmatrix}{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} (n)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 1} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 2} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 3} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 4} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 5} \right)}\end{bmatrix}.}}\end{matrix}$

Let a₁=|x(n−l)|, 0≦l≦5, then each cross correlation vector blockd(n)·x(n−l) may be expressed as:

${{{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - l} \right)} = {\begin{bmatrix}1 \\a_{l} \\a_{l}^{2} \\a_{l}^{3} \\a_{l}^{4}\end{bmatrix}\mspace{11mu} d\mspace{11mu} {(n) \cdot x}\mspace{11mu} \left( {n - l} \right)}},\mspace{14mu} {0 \leq l \leq 5.}}\;$

Within this block, complex-complex multiplication is used once tocompute d(n)·x(n−l), and the remaining 4 elements are obtained,sequentially, by multiplying the previous element by a₁, usingscalar-complex multiplication. Note that a₁, 0≦l≦5 may be computed andstored before and does not need to be computed again.

The following is the procedure performed by the weight estimator 12according to an example embodiment of the present invention to computethe cross-correlation vector:

Repeating for 0≦l≦5,

-   1. Compute v_(5l+1)(n)=d(n)·x(n−l), using complex-complex    multiplication.-   2. Compute v_(5l+2)(n), . . . , v_(5l+5)(n), sequentially, by    multiplying the previous element by a_(l), using scalar-complex    multiplication.

The computation complexity is summarized below in table 7:

TABLE 9 Operations #Mult #Add 6 complex-complex multiplications 24 12 24scalar-complex multiplications 48 0 Total 72 12 Baseline: 30complex-complex 120 60 multiplications

Improved Method with Cross Terms

Next, cross-polynomial terms will be considered, and it will be shownthat the same techniques of the present invention may be used to reducecomputation complexity. Cross-polynomial terms account for correlationbetween polynomial terms from different delay times, and may improve theeffectiveness of the distortion modeling.

Consider the products |x(n−m)|²x(n) and |x(n−m)|⁴x(n), 1≦m≦12, which arethe cross product between a current sample and a magnitude-polynomial ata different sample time. Let b_(m) ²=|x(n−m)|² and b_(m) ⁴=|x(n−m)|⁴.Two cross term vectors y(n) and z(n) may be defined as:

${\underset{\_}{y}\mspace{11mu} (n)} = {{\begin{bmatrix}{{x\mspace{11mu} \left( {n - 1} \right)}}^{2} \\{{x\mspace{11mu} \left( {n - 2} \right)}}^{2} \\{{x\mspace{11mu} \left( {n - 3} \right)}}^{2} \\\vdots \\{{x\mspace{11mu} \left( {n - 12} \right)}}^{2}\end{bmatrix}\mspace{14mu} x\mspace{11mu} (n)} = {\begin{bmatrix}b_{1}^{2} \\b_{2}^{2} \\b_{3}^{2} \\\cdots \\b_{12}^{2}\end{bmatrix}\mspace{11mu} x\mspace{11mu} (n)}}$${\underset{\_}{z}\mspace{11mu} (n)} = {{\begin{bmatrix}{{x\mspace{11mu} \left( {n - 1} \right)}}^{4} \\{{x\mspace{11mu} \left( {n - 2} \right)}}^{4} \\{{x\mspace{11mu} \left( {n - 3} \right)}}^{4} \\\vdots \\{{x\mspace{11mu} \left( {n - 12} \right)}}^{4}\end{bmatrix}\mspace{14mu} x\mspace{11mu} (n)} = {\begin{bmatrix}b_{1}^{4} \\b_{2}^{4} \\b_{3}^{4} \\\cdots \\b_{12}^{4}\end{bmatrix}\mspace{11mu} x\mspace{11mu} (n)}}$

The cross term vectors y(n) and z(n) are appended to the concatenatedamplifier output signal vector u(n) as shown below:

${\underset{\_}{u}\mspace{11mu} (n)} = {\begin{bmatrix}{\underset{\_}{x}\mspace{11mu} (n)} \\{\underset{\_}{x}\mspace{11mu} \left( {n - 1} \right)} \\{\underset{\_}{x}\mspace{11mu} \left( {n - 2} \right)} \\{\underset{\_}{x}\mspace{11mu} \left( {n - 3} \right)} \\{\underset{\_}{x}\mspace{11mu} \left( {n - 4} \right)} \\{\underset{\_}{x}\mspace{11mu} \left( {n - 5} \right)} \\{\underset{\_}{y}\mspace{11mu} (n)} \\{\underset{\_}{z}\mspace{11mu} (n)}\end{bmatrix} = {\begin{bmatrix}{u_{1}(n)} \\{u_{2}(n)} \\{u_{3}(n)} \\{u_{4}(n)} \\\vdots \\{u_{53}(n)} \\{u_{54}(n)}\end{bmatrix}.}}$

Note that with the cross terms, there are M=KL+12+12=54 elements in theinput signal vector u(n). This assumes that b_(m) ² and b_(m) ⁴ werecomputed and stored by the weight estimator 12 while computing diagonalblock R _(1,1)(n−m) at time n−m for m=1, 2, . . . , 12. It is alsoassumed that a²=|x(n)|² was already computed and stored for use by theweight estimator 12.

Correlation Matrix

Reducing the computation complexity for determining the correlationmatrix including cross polynomial terms will now be described. Theexpanded correlation matrix becomes:

${\underset{\_}{R}\mspace{11mu} (n)} = \begin{bmatrix}{{\underset{\_}{R}}_{1,1}(n)} & {{\underset{\_}{R}}_{1,2}(n)} & {{\underset{\_}{R}}_{1,3}(n)} & {{\underset{\_}{R}}_{1,4}(n)} & {{\underset{\_}{R}}_{1,5}(n)} & {{\underset{\_}{R}}_{1,6}(n)} & {{\underset{\_}{R}}_{1,7}(n)} & {{\underset{\_}{R}}_{1,8}(n)} \\{{\underset{\_}{R}}_{2,1}(n)} & {{\underset{\_}{R}}_{2,2}(n)} & {{\underset{\_}{R}}_{2,3}(n)} & {{\underset{\_}{R}}_{2,4}(n)} & {{\underset{\_}{R}}_{2,5}(n)} & {{\underset{\_}{R}}_{2,6}(n)} & {{\underset{\_}{R}}_{2,7}(n)} & {{\underset{\_}{R}}_{2,8}(n)} \\{{\underset{\_}{R}}_{3,1}(n)} & {{\underset{\_}{R}}_{3,2}(n)} & {{\underset{\_}{R}}_{3,3}(n)} & {{\underset{\_}{R}}_{3,4}(n)} & {{\underset{\_}{R}}_{3,5}(n)} & {{\underset{\_}{R}}_{3,6}(n)} & {{\underset{\_}{R}}_{3,7}(n)} & {{\underset{\_}{R}}_{3,8}(n)} \\{{\underset{\_}{R}}_{4,1}(n)} & {{\underset{\_}{R}}_{4,2}(n)} & {{\underset{\_}{R}}_{4,3}(n)} & {{\underset{\_}{R}}_{4,4}(n)} & {{\underset{\_}{R}}_{4,5}(n)} & {{\underset{\_}{R}}_{4,6}(n)} & {{\underset{\_}{R}}_{4,7}(n)} & {{\underset{\_}{R}}_{4,8}(n)} \\{{\underset{\_}{R}}_{5,1}(n)} & {{\underset{\_}{R}}_{5,2}(n)} & {{\underset{\_}{R}}_{5,3}(n)} & {{\underset{\_}{R}}_{5,4}(n)} & {{\underset{\_}{R}}_{5,5}(n)} & {{\underset{\_}{R}}_{5,6}(n)} & {{\underset{\_}{R}}_{5,7}(n)} & {{\underset{\_}{R}}_{5,8}(n)} \\{{\underset{\_}{R}}_{6,1}(n)} & {{\underset{\_}{R}}_{6,2}(n)} & {{\underset{\_}{R}}_{6,3}(n)} & {{\underset{\_}{R}}_{6,4}(n)} & {{\underset{\_}{R}}_{6,5}(n)} & {{\underset{\_}{R}}_{6,6}(n)} & {{\underset{\_}{R}}_{6,7}(n)} & {{\underset{\_}{R}}_{6,8}(n)} \\{{\underset{\_}{R}}_{7,1}(n)} & {{\underset{\_}{R}}_{7,2}(n)} & {{\underset{\_}{R}}_{7,3}(n)} & {{\underset{\_}{R}}_{7,4}(n)} & {{\underset{\_}{R}}_{6,5}(n)} & {{\underset{\_}{R}}_{7,6}(n)} & {{\underset{\_}{R}}_{7,7}(n)} & {{\underset{\_}{R}}_{7,8}(n)} \\{{\underset{\_}{R}}_{8,1}(n)} & {{\underset{\_}{R}}_{8,2}(n)} & {{\underset{\_}{R}}_{8,3}(n)} & {{\underset{\_}{R}}_{8,4}(n)} & {{\underset{\_}{R}}_{6,5}(n)} & {{\underset{\_}{R}}_{8,6}(n)} & {{\underset{\_}{R}}_{8,7}(n)} & {{\underset{\_}{R}}_{8,8}(n)}\end{bmatrix}$

It will be appreciated that each block R _(i,j)(n) for i=1, . . . , 6and j=1, . . . , 6 is a 5×5 matrix and cross-polynomial terms were notincluded in the vector u(n) as discussed above. Accordingly, these Type1 and Type 2 blocks may be computed as discussed above, and only thecomputation of the blocks in the last two row and last two columns willbe described in detail. The last two columns and last two rows havedifferent sizes than the first 36 blocks. For example, diagonal blocks R_(7,7)(n) and R _(8,8)(n) are 12×12 matrices, and off-diagonal blocks R_(1,7)(n) and R _(1,8)(n) are 5×12 matrices.

From the symmetry property, only the upper triangular blocks within thelast two columns need to be considered. These 15 blocks can be groupedinto 4 further types where the blocks in each type have the samestructure as set forth in table 8 below (it will be recalled that blockTypes 1 and 2 were discussed above):

TABLE 10 Type Blocks Example # in this type Dim # Expression 3R_(1,7)(n), R_(1,8)(n)  5 × 12 2 R_(1,7)(n) = x(n) · y^(H) (n) 4R_(2,7)(n),..., R_(6,7)(n) and  5 × 12 10 R_(2,7)(n) = x(n − 1) · y^(H)(n) R_(2,8)(n),..., R_(6,8)(n) 5 R_(7,7)(n), R_(8,8)(n) 12 × 12 2R_(7,7)(n) = y(n) · y^(H) (n) 6 R_(7,8)(n) 12 × 12 1 R_(7,8)(n) = y(n) ·z^(H) (n)

Type 3 Blocks

Consider block R _(1,7)(n) shown below:

$\begin{matrix}{{\underset{\_}{R}}_{1,7} = {{\underset{\_}{x}\mspace{11mu} {(n) \cdot {{\underset{\_}{y}}^{H}(n)}}} = {{\begin{bmatrix}1 \\a \\a^{2} \\a^{3} \\a^{4}\end{bmatrix}\left\lbrack {b_{1}^{2}\mspace{14mu} b_{2}^{2}\mspace{14mu} b_{3}^{2}\mspace{14mu} \ldots \mspace{14mu} b_{12}^{2}} \right\rbrack}\mspace{11mu} x\mspace{11mu} {(n) \cdot {x^{*}(n)}}}}} \\{= {\begin{bmatrix}b_{1}^{2} & b_{2}^{2} & b_{3}^{2} & \ldots & b_{12}^{2} \\{ab}_{1}^{2} & {ab}_{2}^{2} & {ab}_{3}^{2} & \ldots & {ab}_{12}^{2} \\{a^{2}b_{1}^{2}} & {a^{2}b_{2}^{2}} & {a^{2}b_{3}^{2}} & \ldots & {a^{2}b_{12}^{2}} \\{a^{3}b_{1}^{2}} & {a^{3}b_{2}^{2}} & {a^{3}b_{3}^{2}} & \vdots & {a^{3}b_{12}^{2}} \\{a^{4}b_{1}^{2}} & {a^{4}b_{2}^{2}} & {a^{4}b_{3}^{2}} & \ldots & {a^{4}b_{12}^{2}}\end{bmatrix}\mspace{11mu} a^{2}}}\end{matrix}$

Hence all 60 elements are real-valued.

The following is the procedure performed at the weight estimator 12according to an embodiment of the present invention to compute theelements in block R _(1,7)(n):

-   1. Compute the first row, using one scalar-scalar multiplication for    each b_(m) ²·a²-   2. Compute the remaining rows sequentially, by multiplying a    previous row by a using one scalar-scalar multiplication per    element.

The computation complexity is summarized below in table 9:

TABLE 11 Operations #Mult #Add 60 scalar-scalar multiplications 60 0Subtotal 60 0 Total 2 blocks 120 0 Baseline: 2 × 60 complex-complex 480240 multiplications

Type 4 Blocks

Consider block R _(2,7)(n) where a₁=|x(n−1)| shown below:

$\begin{matrix}{{\underset{\_}{R}}_{2,7} = {{\underset{\_}{x}\mspace{11mu} {\left( {n - 1} \right) \cdot {{\underset{\_}{y}}^{H}(n)}}} = {{\begin{bmatrix}1 \\a_{1} \\a_{1}^{2} \\a_{1}^{3} \\a_{1}^{4}\end{bmatrix}\left\lbrack {b_{1}^{2}\mspace{14mu} b_{2}^{2}\mspace{14mu} b_{3}^{2}\mspace{14mu} \ldots \mspace{14mu} b_{12}^{2}} \right\rbrack}\mspace{11mu} x\mspace{11mu} {\left( {n - 1} \right) \cdot {x^{*}(n)}}}}} \\{= {\begin{bmatrix}b_{1}^{2} & b_{2}^{2} & b_{3}^{2} & \ldots & b_{12}^{2} \\{a_{1}b_{1}^{2}} & {a_{1}b_{2}^{2}} & {a_{1}b_{3}^{2}} & \ldots & {a_{1}b_{12}^{2}} \\{a_{1}^{2}b_{1}^{2}} & {a_{1}^{2}b_{2}^{2}} & {a_{1}^{2}b_{3}^{2}} & \ldots & {a_{1}^{2}b_{12}^{2}} \\{a_{1}^{3}b_{1}^{2}} & {a_{1}^{3}b_{2}^{2}} & {a_{1}^{3}b_{3}^{2}} & \vdots & {a_{1}^{3}b_{12}^{2}} \\{a_{1}^{4}b_{1}^{2}} & {a_{1}^{4}b_{2}^{2}} & {a_{1}^{4}b_{3}^{2}} & \ldots & {a_{1}^{4}b_{12}^{2}}\end{bmatrix}\mspace{11mu} x\mspace{11mu} {\left( {n - 1} \right) \cdot {x^{*}(n)}}}}\end{matrix}$

Hence, only one complex-complex multiplication is computed for all 60elements. The following is the procedure performed by the weightestimator 12 to compute the elements in block R _(2,7)(n):

-   1. Compute x(n−1)·x*(n), using one complex-complex multiplication.    Note that the conjugate of this term may be computed and stored    while computing R _(1,2)(n).-   2. Compute the first row, by multiplying x(n−1)·x*(n) by b_(m) ²,    using one scalar-complex multiplication per element.-   3. Compute the remaining rows sequentially, by multiplying a    previous row by a₁ using one scalar-complex multiplication per    element.

The computation complexity is summarized below in table 10:

TABLE 12 Operations #Mult #Add 1 complex-complex multiplication 4 2 60scalar-complex multiplications 120 0 Subtotal 124 2 Total 10 blocks 124020 Baseline: 10 × 60 complex-complex 2400 1200 multiplications

Type 5 Blocks

Consider block R _(7,7)(n) shown below:

$\begin{matrix}{{\underset{\_}{R}}_{7,7} = {{\underset{\_}{y}\mspace{11mu} {(n) \cdot {{\underset{\_}{y}}^{H}(n)}}} = {{\begin{bmatrix}b_{1}^{2} \\b_{2}^{2} \\b_{3}^{2} \\\vdots \\b_{12}^{2}\end{bmatrix}\left\lbrack {b_{1}^{2}\mspace{14mu} b_{2}^{2}\mspace{14mu} b_{3}^{2}\mspace{14mu} \ldots \mspace{14mu} b_{12}^{2}} \right\rbrack}\mspace{11mu} x\mspace{11mu} {(n) \cdot {x^{*}(n)}}}}} \\{= {\begin{bmatrix}{b_{1}^{2}b_{1}^{2}} & {b_{1}^{2}b_{2}^{2}} & {b_{1}^{2}b_{3}^{2}} & \ldots & {b_{1}^{2}b_{12}^{2}} \\{b_{2}^{2}b_{1}^{2}} & {b_{2}^{2}b_{2}^{2}} & {b_{2}^{2}b_{3}^{2}} & \ldots & {b_{2}^{2}b_{12}^{2}} \\{b_{3}^{2}b_{1}^{2}} & {b_{3}^{2}b_{2}^{2}} & {b_{3}^{2}b_{3}^{2}} & \ldots & {b_{3}^{2}b_{12}^{2}} \\\vdots & \vdots & \vdots & \vdots & \vdots \\{b_{12}^{2}b_{1}^{2}} & {b_{12}^{2}b_{2}^{2}} & {b_{12}^{2}b_{3}^{2}} & \ldots & {b_{12}^{2}b_{12}^{2}}\end{bmatrix}\mspace{11mu} a^{2}}}\end{matrix}$

All elements in the block are real valued. From the symmetry property,only the 78(=12·13/2) upper triangle elements need to be computed. Foreach of these elements, the term b_(i) ²·b_(j) ²·a² is computed, whichrequires 2 scalar-scalar multiplications. The computation complexity issummarized below in table 11:

TABLE 13 Operations #Mult #Add 78 double scalar multiplications 156 0Subtotal 156 0 Total 2 blocks 312 0 Baseline: 2 × 78 complex-complex 624312 multiplications

Type 6 Block

Consider block R _(7,8) shown below:

$\begin{matrix}{{\underset{\_}{R}}_{7,8} = {{\underset{\_}{y}\mspace{11mu} {(n) \cdot {\underset{\_}{z}}^{H}}(n)} = {{\begin{bmatrix}b_{1}^{2} \\b_{2}^{2} \\b_{3}^{2} \\\vdots \\b_{12}^{2}\end{bmatrix}\left\lbrack {b_{1}^{4}\mspace{14mu} b_{2}^{4}\mspace{14mu} b_{3}^{4}\mspace{14mu} \ldots \mspace{14mu} b_{12}^{4}} \right\rbrack}\mspace{11mu} x\mspace{11mu} {(n) \cdot {x^{*}(n)}}}}} \\{= {\begin{bmatrix}{b_{1}^{2}b_{1}^{4}} & {b_{1}^{2}b_{2}^{4}} & {b_{1}^{2}b_{3}^{4}} & \ldots & {b_{1}^{2}b_{12}^{4}} \\{b_{2}^{2}b_{1}^{4}} & {b_{2}^{2}b_{2}^{4}} & {b_{2}^{2}b_{3}^{4}} & \ldots & {b_{2}^{2}b_{12}^{4}} \\{b_{3}^{2}b_{1}^{4}} & {b_{3}^{2}b_{2}^{4}} & {b_{3}^{2}b_{3}^{4}} & \ldots & {b_{3}^{2}b_{12}^{4}} \\\vdots & \vdots & \vdots & \vdots & \vdots \\{b_{12}^{2}b_{1}^{4}} & {b_{12}^{2}b_{2}^{4}} & {b_{12}^{2}b_{3}^{4}} & \ldots & {b_{12}^{2}b_{12}^{4}}\end{bmatrix}\mspace{11mu} a^{2}}}\end{matrix}$

All 144 elements in the block are real valued. For each of theseelements, the term b_(i) ²·b_(j) ⁴·a² is computed, which requires 2scalar-scalar multiplications. The computation complexity is summarizedbelow in table 12:

TABLE 14 Operations #Mult #Add 144 double scalar-scalar 288 0multiplications Total 288 0 Baseline: 144 complex-complex 576 288multiplications

Computation Complexity

The section will summarize the reduction in computation complexity, inthe correlation matrix, for the improved methodology with cross terms.There are 1485(=54*55/2) elements in the upper triangular correlationmatrix. The complexity is summarized below in table 13:

TABLE 15 Operations #Mult #Add Type 1 (diagonal) blocks (6) 60 6 Type 2(off-diagonal) blocks (15) 780 30 Type 3 blocks (2) 120 0 Type 4 blocks(10) 1240 20 Type 5 blocks (2) 312 0 Type 6 block (1) 288 0 Total 280056 Baseline: 1485 complex-complex 5940 2970 multiplications

Cross Correlation Vector

Next, reducing the computation complexity for determining the crosscorrelation vector will be described. The cross correlation vector attime n is:

$\begin{matrix}{{\underset{\_}{v}\mspace{11mu} (n)} = {d\mspace{11mu} {(n) \cdot \underset{\_}{u}}\mspace{11mu} (n)}} \\{= {\begin{bmatrix}{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} (n)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 1} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 2} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 3} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 4} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{x}}\mspace{11mu} \left( {n - 5} \right)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{y}}\mspace{11mu} (n)} \\{d\mspace{11mu} {(n) \cdot \underset{\_}{z}}\mspace{11mu} (n)}\end{bmatrix}.}}\end{matrix}$ where${d\mspace{11mu} {(n) \cdot \underset{\_}{y}}\mspace{11mu} (n)} = {\begin{bmatrix}{{b_{1}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\{{b_{2}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\{{b_{3}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\\vdots \\{{b_{12}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)}\end{bmatrix} = {\begin{bmatrix}b_{1}^{2} \\b_{2}^{2} \\b_{3}^{2} \\\vdots \\b_{12}^{2}\end{bmatrix}\mspace{11mu} d\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)\mspace{11mu} {and}}}$${d\mspace{11mu} {(n) \cdot \underset{\_}{z}}\mspace{11mu} (n)} = {\begin{bmatrix}{{b_{1}^{2} \cdot b_{1}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\{{b_{2}^{2} \cdot b_{2}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\{{b_{3}^{2} \cdot b_{3}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)} \\\vdots \\{{b_{12}^{2} \cdot b_{12}^{2} \cdot d}\mspace{11mu} {(n) \cdot x}\mspace{11mu} (n)}\end{bmatrix}.}$

For 0≦l≦5, the computation of each cross correlation vector blockd(n)·x(n−l) was discussed in detail above. Accordingly, on thecomputation of the cross correlation vector blocks with cross term willbe described in detail.

First d(n)·y(n) is computed, and then is used to compute d(n)·z(n). Tocompute d(n)·y(n), a complex-complex multiplication is used once tocompute d(n)·x(n). Then, the elements b₁ ²·d(n)·x(n) and b₁ ²·b₁²·d(n)·x(n) for 1≦l≦12 are obtained using scalar-complex multiplication.

The following is the sequence performed by the weight estimator 12according to an embodiment of the present invention to compute thecross-correlation vector for y(n) and z(n) sections:

-   1. Compute d(n)·x(n), using complex-complex multiplication.-   2. Compute b₁ ²·d(n)·x(n) and then b₁ ²·b₁ ²·d(n)·x(n), using    scalar-complex multiplication, for 1≦l≦12.

The computation complexity is summarized below in table 14:

TABLE 16 Operations #Mult #Add x(n) sections 6 complex-complex 24 12multiplications 24 scalar-complex 48 0 multiplications y(n) and z(n)sections 1 complex-complex 4 2 multiplication 24 scalar-complex 48 0multiplications Total 124 14 Baseline: 54 complex-complex 216 108multiplications

The present invention provides methodologies to reduce the computationcomplexity for digital pre-distortion. As demonstrated above, more thanhalf the correlation computation may be reduced.

The invention being thus described, it will be obvious that the same maybe varied in many ways. For example, while mentioned as applicable todigital pre-distortion for RF amplifiers, the present invention is alsoapplication to pre-distortion for other types of amplifiers.Furthermore, the computation reduction techniques discussed above forthe different types of blocks and cross correlation vectors may be usedtogether or may be used independently of each other. In other words, thecomputation reduction technique for only one type of block may be used.Such variations are not to be regarded as a departure from theinvention, and all such modifications are intended to be included withinthe scope of the invention.

1. A method of pre-distorting a signal for input to an amplifier,comprising: generating a weight vector based on a pre-distorted inputsignal and an output signal of the amplifier using a computationreduction technique; and pre-distorting an input signal for input to anamplifier based on the generated weight vector; and wherein thecomputation reduction technique decomposes a number of multiplicationoperations between complex numbers such that a total number ofmultiplications and a total number of additions to generate the weightvector is reduced as compared to if the number of multiplicationoperations between complex numbers was not decomposed.
 2. The method ofclaim 1, wherein the generating step comprises: computing a correlationdiagonal block derived from one of the output signal and a previousoutput signal, a first term of the vector being a complex number andhaving a magnitude, and each subsequent term of the vector beingobtained by multiplying the first term by a result of raising themagnitude to a respective exponential order.
 3. The method of claim 2,wherein the computing step comprises: computing a square of the firstterm to obtain a first scalar value; computing a square root of thesquare to obtain a second scalar value; using scalar multiplication andthe first and second scalar values to obtain elements in the diagonalblock.
 4. The method of claim 1, wherein the generating step comprises:computing a correlation off-diagonal block derived from a first vectorand a second vector, the first vector derived from one of the outputsignal and a previous output signal, a first term of the vector being acomplex number and having a magnitude, and each subsequent term of thefirst vector being obtained by multiplying the first term by a result ofraising the magnitude to a respective exponential order, and the secondvector derived from a previous output signal, and a first term of thesecond vector being a previous first term of the first vector.
 5. Themethod of claim 4, wherein the computing step comprises: computing afirst element of a first row of the off-diagonal block as the first termof the first vector times a complex conjugate of the first term of thesecond vector; computing remaining elements of the first row of theoff-diagonal block using scalar-complex multiplication, the firstelement and a magnitude of the first term of the second vector;computing each subsequent row of the off-diagonal block usingscalar-complex multiplication, a previous row of the off-diagonal block,and the magnitude of the first term of the first vector.
 6. The methodof claim 1, wherein the generating step comprises: computing a crosscorrelation vector block derived from the pre-distorted input signal anda vector, the vector obtained from one of the output signal and aprevious output signal, a first term of the vector being a complexnumber and having a magnitude, and each subsequent term of the vectorbeing obtained by multiplying the first term by a result of raising themagnitude to a respective exponential order.
 7. The method of claim 6,wherein the computing step comprises: computing a first element of thecross-correlation vector block as the pre-distortion input signal timesthe first term; and computing a number of subsequent elements of thecross-correlation block using scalar multiplication a previous term andthe magnitude of the first term.
 8. The method of claim 1, wherein thegenerating step comprises: computing an off-diagonal cross correlationblock derived from a first vector and a second vector, the first vectorderived from one of the output signal and a previous output signal as afirst term, a first term of the vector being a complex number and havinga magnitude, and each subsequent term of the vector being obtained bymultiplying the first term by a result of raising the magnitude to arespective exponential order, and each term of the second vector derivedfrom a different previous output signal and the output signal.
 9. Themethod of claim 8, wherein the computing step comprises: computing asquare of the first term to obtain a first scalar value; computing asquare of each term in the second vector to obtain a set of secondscalar values; and using scalar multiplication, the first scalar valueand the set of second scalar values to obtain elements in theoff-diagonal cross correlation block.
 10. The method of claim 1, whereinthe generating step comprises: computing an off-diagonal crosscorrelation block derived from a first and a second vector, each term ofthe first vector being a different previous output signal squared timesthe output signal, and each term of the second vector being a square ofa corresponding term in the first vector.
 11. The method of claim 10,wherein the computing step comprises: computing a square of eachdifferent previous output signal to obtain a first set of scalar values;computing a square of each value in the first set of scalar values toobtain a second set of scalar values; computing a square of the outputsignal to obtain a third scalar value; and using scalar multiplication,the first set of scalar value, the second set of scalar value and thethird scalar value to obtain the elements of the off-diagonalcross-correlation block.
 12. The method of claim 1, wherein thegenerating step comprises: computing a diagonal cross-correlation blockderived from a first vector, each term of the first vector being adifferent previous output signal squared times the output signal. 13.The method of claim 12, wherein the computing step comprises: computinga square of each different previous output signal to obtain a first setof scalar values; computing a square of the output signal to obtain asecond scalar value; and using scalar multiplication, the first set ofscalar values and the second scalar value to obtain the elements of thediagonal cross-correlation block.
 14. The method of claim 1, wherein thegenerating step comprises: computing a cross correlation vector blockderived from the pre-distorted input signal and a first vector, eachterm of the first vector being a different previous output signalsquared times the output signal.
 15. The method of claim 14, wherein thecomputing step comprises: compute the pre-distortion input signal timesthe output signal to obtain a complex value; compute the square of eachdifferent previous output signal to obtain a set of scalar values; andusing scalar-complex multiplication, the complex value and the set ofscalar values to obtain elements of the cross correlation vector block.16. The method of claim 1, wherein the generating step comprises:computing a cross correlation vector block derived from thepre-distorted input signal and a first vector, each term of the firstvector being a different previous output signal quadrupled times theoutput signal.
 17. The method of claim 14, wherein the computing stepcomprises: compute the pre-distortion input signal times the outputsignal to obtain a complex value; compute the square of each differentprevious output signal to obtain a set of scalar values; and usingscalar-complex multiplication, the complex value and the set of scalarvalues to obtain elements of the cross correlation vector block.